Computer programs, also referred to as software, software products, or application programs, are often made available at the same time in more than one version. The different versions of a computer program generally vary by the number of features made available to a user of the computer program. The most common way to install a given version of a computer program is to install the entire framework of that version of the computer program. Accordingly, when upgrading an already installed computer program, a successive installation usually replaces the existing computer program framework during the subsequent installation. This user process of upgrading an already installed computer program by replacing the currently installed program framework is inefficient.
One common method of marketing a software product is to offer a trial version with limited features. The trial version may include reduced functionality, or it may be fully functional but only for a limited period of time, or both. After an evaluation or trial period, the user may be offered the opportunity to upgrade the trial version of the software to a full version. In many cases, the end user agrees to a perpetual license of the fully functional software, subject to terms and conditions prohibiting, for example, copying, modifying, editing, or distributing the software.
Trial version software can be distributed to the user by a variety of different means. The most common method today is to transfer the product electronically (e.g., download) over a network, such as streaming or packetized data sent over local or wide area networks (intranets), the Internet, and wireless networks.
Once installed on the user's local computer, the computer program, be it a trial version or fully functional version, may be accessed and used by anyone who happens to possess it. This can present a problem for software manufacturers in that it facilitates the illegal copying and distribution of their software products (e.g., pirating). In effect, each valid copy of a downloaded program can be used as a master to generate illegal copies, or can also be used as a platform for hackers to experiment and ultimately exploit its vulnerabilities.
Software piracy occurs when software is illegally copied, sold or improperly licensed. Forms of piracy include Internet piracy, or the downloading of product serial numbers, key generators, software cracks, and illegal versions of products. Another form of piracy is straight-forward counterfeiting, when multiple copies are illegally made and distributed by CD or DVD. Yet another form of software piracy is end user piracy, when someone makes or distributes software copies without paying for or having a valid license for the number of copies in their possession. Examples of end user piracy include companies that buy volume licenses but under-report the additional copies of software they've made; or companies that give employees network access to software, and don't monitor the number of downloads in order to ensure they're still compliant with their license agreement; or companies or individuals who share software among friends, allowing them to illegally copy the product without paying for it. A less blatant but very common form of software piracy includes softlifting, when a single license copy of a software program is purchased and then loaded onto multiple machines, contrary to the terms of agreement. Gray market piracy occurs when unauthorized resellers sell software at unusually low prices, undercutting the authorized/legitimate resellers. Gray market piracy can occur in several different forms, such as selling illegitimate OEM software; selling academic software to unauthorized or non-academic organizations; distribution of CD Only products or replacement CDs; and selling Not For Resale (NFR) software.
Software piracy has become a financial burden to the software industry as well. Popular software programs, sold in the tens or hundreds of millions, may have pirated versions numbering in the millions. This represents a significant percentage of potential sales, and erodes already-strained profit margins in an industry with stiff competition.
Although some anti-piracy and copy protection schemes currently exist to protect distributed software, these systems are typically not adequate to protect against a determined attack to break the protection. Moreover, once a program has been hacked, it is usually quite easy for the hacker to produce downloadable tools that eliminate the protection. The time it takes to crack a software application security system is typically measured in hours or, at most, a few days. This means that as soon as a pirate gains possession of the software, it is often a simple matter to remove existing digital rights management tools, such as copy protection, and sell or distribute illegal copies of the software.